home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 34 / Amiga Format CD34 (1998-11-20)(Future Publishing)(GB)[!][Christmas issue].iso / -seriously_amiga- / programming / c / mesa-2.6 / include / gl / glut.h < prev    next >
C/C++ Source or Header  |  1998-10-01  |  19KB  |  509 lines

  1. #ifndef __glut_h__
  2. #define __glut_h__
  3.  
  4. /* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996. */
  5.  
  6. /* This program is freely distributable without licensing fees  and is
  7.    provided without guarantee or warrantee expressed or  implied. This
  8.    program is -not- in the public domain. */
  9.  
  10. /*
  11.  * glut.h
  12.  *
  13.  * Version 1.0  28 Jun 1998
  14.  * by Jarno van der Linden
  15.  * jarno@kcbbs.gen.nz
  16.  *
  17.  * Based on glut.h
  18.  * The functions not supported are commented out
  19.  *
  20.  * Version 2.0  08 Aug 1998
  21.  * by Jarno van der Linden
  22.  * jarno@kcbbs.gen.nz
  23.  *
  24.  * - Changed to runtime library format
  25.  *
  26.  */
  27.  
  28.  
  29. #if defined(WIN32)
  30. #include <windows.h>
  31. #pragma warning (disable:4244)        /* disable bogus conversion warnings */
  32. #endif
  33. #include <GL/gl.h>
  34. #include <GL/glu.h>
  35.  
  36. /* define and CALLBACK to null string if we aren't on Win32 */
  37. #if !defined(WIN32)
  38. #define APIENTRY
  39. #define CALLBACK
  40. #endif
  41.  
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif
  45.  
  46. #ifdef AMIGA
  47. #ifndef MAKE_GLUTLIB
  48. #include "pragmas/glut_pragmas.h"
  49. extern struct Library *glutBase;
  50. #endif
  51. #endif
  52.  
  53.  
  54. /**
  55.  GLUT API revision history:
  56.  
  57.  GLUT_API_VERSION is updated to reflect incompatible GLUT
  58.  API changes (interface changes, semantic changes, deletions,
  59.  or additions).
  60.  
  61.  GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
  62.  
  63.  GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
  64.  extension.  Supports new input devices like tablet, dial and button
  65.  box, and Spaceball.  Easy to query OpenGL extensions.
  66.  
  67.  GLUT_API_VERSION=3  glutMenuStatus added.
  68.  
  69.  GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
  70.  glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
  71.  video resize subAPI (NOT FINALIZED!).
  72. **/
  73. #ifndef GLUT_API_VERSION  /* allow this to be overriden */
  74. #define GLUT_API_VERSION        3
  75. #endif
  76.  
  77. /**
  78.  GLUT implementation revision history:
  79.  
  80.  GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
  81.  API revisions and implementation revisions (ie, bug fixes).
  82.  
  83.  GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
  84.  GLUT Xlib-based implementation.  11/29/94
  85.  
  86.  GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
  87.  GLUT Xlib-based implementation providing GLUT version 2
  88.  interfaces.
  89.  
  90.  GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
  91.  
  92.  GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
  93.  
  94.  GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
  95.  
  96.  GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
  97.  
  98.  GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
  99.  and video resize.  1/3/97
  100.  
  101.  GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
  102.  
  103.  GLUT_XLIB_IMPLEMENTATION=11 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
  104. **/
  105. #ifndef GLUT_XLIB_IMPLEMENTATION  /* Allow this to be overriden. */
  106. #define GLUT_XLIB_IMPLEMENTATION    11
  107. #endif
  108.  
  109. /* Display mode bit masks. */
  110. #define GLUT_RGB            0
  111. #define GLUT_RGBA            GLUT_RGB
  112. #define GLUT_INDEX            1
  113. #define GLUT_SINGLE            0
  114. #define GLUT_DOUBLE            2
  115. #define GLUT_ACCUM            4
  116. #define GLUT_ALPHA            8
  117. #define GLUT_DEPTH            16
  118. #define GLUT_STENCIL            32
  119. #if (GLUT_API_VERSION >= 2)
  120. #define GLUT_MULTISAMPLE        128
  121. #define GLUT_STEREO            256
  122. #endif
  123. #if (GLUT_API_VERSION >= 3)
  124. #define GLUT_LUMINANCE            512
  125. #endif
  126.  
  127. /* Mouse buttons. */
  128. #define GLUT_LEFT_BUTTON        0
  129. #define GLUT_MIDDLE_BUTTON        1
  130. #define GLUT_RIGHT_BUTTON        2
  131.  
  132. /* Mouse button  state. */
  133. #define GLUT_DOWN            0
  134. #define GLUT_UP                1
  135.  
  136. #if (GLUT_API_VERSION >= 2)
  137. /* function keys */
  138. #define GLUT_KEY_F1            1
  139. #define GLUT_KEY_F2            2
  140. #define GLUT_KEY_F3            3
  141. #define GLUT_KEY_F4            4
  142. #define GLUT_KEY_F5            5
  143. #define GLUT_KEY_F6            6
  144. #define GLUT_KEY_F7            7
  145. #define GLUT_KEY_F8            8
  146. #define GLUT_KEY_F9            9
  147. #define GLUT_KEY_F10            10
  148. #define GLUT_KEY_F11            11
  149. #define GLUT_KEY_F12            12
  150. /* directional keys */
  151. #define GLUT_KEY_LEFT            100
  152. #define GLUT_KEY_UP            101
  153. #define GLUT_KEY_RIGHT            102
  154. #define GLUT_KEY_DOWN            103
  155. #define GLUT_KEY_PAGE_UP        104
  156. #define GLUT_KEY_PAGE_DOWN        105
  157. #define GLUT_KEY_HOME            106
  158. #define GLUT_KEY_END            107
  159. #define GLUT_KEY_INSERT            108
  160. #endif
  161.  
  162. /* Entry/exit  state. */
  163. #define GLUT_LEFT            0
  164. #define GLUT_ENTERED            1
  165.  
  166. /* Menu usage  state. */
  167. #define GLUT_MENU_NOT_IN_USE        0
  168. #define GLUT_MENU_IN_USE        1
  169.  
  170. /* Visibility  state. */
  171. #define GLUT_NOT_VISIBLE        0
  172. #define GLUT_VISIBLE            1
  173.  
  174. /* Window status  state. */
  175. #define GLUT_HIDDEN            0
  176. #define GLUT_FULLY_RETAINED        1
  177. #define GLUT_PARTIALLY_RETAINED        2
  178. #define GLUT_FULLY_COVERED        3
  179.  
  180. /* Color index component selection values. */
  181. #define GLUT_RED            0
  182. #define GLUT_GREEN            1
  183. #define GLUT_BLUE            2
  184.  
  185. /* Layers for use. */
  186. #define GLUT_NORMAL            0
  187. #define GLUT_OVERLAY            1
  188.  
  189. #if defined(WIN32)
  190. /* Stroke font constants (use these in GLUT program). */
  191. #define GLUT_STROKE_ROMAN        ((void*)0)
  192. #define GLUT_STROKE_MONO_ROMAN        ((void*)1)
  193.  
  194. /* Bitmap font constants (use these in GLUT program). */
  195. #define GLUT_BITMAP_9_BY_15        ((void*)2)
  196. #define GLUT_BITMAP_8_BY_13        ((void*)3)
  197. #define GLUT_BITMAP_TIMES_ROMAN_10    ((void*)4)
  198. #define GLUT_BITMAP_TIMES_ROMAN_24    ((void*)5)
  199. #if (GLUT_API_VERSION >= 3)
  200. #define GLUT_BITMAP_HELVETICA_10    ((void*)6)
  201. #define GLUT_BITMAP_HELVETICA_12    ((void*)7)
  202. #define GLUT_BITMAP_HELVETICA_18    ((void*)8)
  203. #endif
  204. #else
  205. /* Stroke font opaque addresses (use constants instead in source code). */
  206. extern void *glutStrokeRoman;
  207. extern void *glutStrokeMonoRoman;
  208.  
  209. /* Stroke font constants (use these in GLUT program). */
  210. #define GLUT_STROKE_ROMAN        (&glutStrokeRoman)
  211. #define GLUT_STROKE_MONO_ROMAN        (&glutStrokeMonoRoman)
  212.  
  213. /* Bitmap font opaque addresses (use constants instead in source code). */
  214. extern void *glutBitmap9By15;
  215. extern void *glutBitmap8By13;
  216. extern void *glutBitmapTimesRoman10;
  217. extern void *glutBitmapTimesRoman24;
  218. extern void *glutBitmapHelvetica10;
  219. extern void *glutBitmapHelvetica12;
  220. extern void *glutBitmapHelvetica18;
  221.  
  222. /* Bitmap font constants (use these in GLUT program). */
  223. #define GLUT_BITMAP_9_BY_15        (&glutBitmap9By15)
  224. #define GLUT_BITMAP_8_BY_13        (&glutBitmap8By13)
  225. #define GLUT_BITMAP_TIMES_ROMAN_10    (&glutBitmapTimesRoman10)
  226. #define GLUT_BITMAP_TIMES_ROMAN_24    (&glutBitmapTimesRoman24)
  227. #if (GLUT_API_VERSION >= 3)
  228. #define GLUT_BITMAP_HELVETICA_10    (&glutBitmapHelvetica10)
  229. #define GLUT_BITMAP_HELVETICA_12    (&glutBitmapHelvetica12)
  230. #define GLUT_BITMAP_HELVETICA_18    (&glutBitmapHelvetica18)
  231. #endif
  232. #endif
  233.  
  234. /* glutGet parameters. */
  235. #define GLUT_WINDOW_X            100
  236. #define GLUT_WINDOW_Y            101
  237. #define GLUT_WINDOW_WIDTH        102
  238. #define GLUT_WINDOW_HEIGHT        103
  239. #define GLUT_WINDOW_BUFFER_SIZE        104
  240. #define GLUT_WINDOW_STENCIL_SIZE    105
  241. #define GLUT_WINDOW_DEPTH_SIZE        106
  242. #define GLUT_WINDOW_RED_SIZE        107
  243. #define GLUT_WINDOW_GREEN_SIZE        108
  244. #define GLUT_WINDOW_BLUE_SIZE        109
  245. #define GLUT_WINDOW_ALPHA_SIZE        110
  246. #define GLUT_WINDOW_ACCUM_RED_SIZE    111
  247. #define GLUT_WINDOW_ACCUM_GREEN_SIZE    112
  248. #define GLUT_WINDOW_ACCUM_BLUE_SIZE    113
  249. #define GLUT_WINDOW_ACCUM_ALPHA_SIZE    114
  250. #define GLUT_WINDOW_DOUBLEBUFFER    115
  251. #define GLUT_WINDOW_RGBA        116
  252. #define GLUT_WINDOW_PARENT        117
  253. #define GLUT_WINDOW_NUM_CHILDREN    118
  254. #define GLUT_WINDOW_COLORMAP_SIZE    119
  255. #if (GLUT_API_VERSION >= 2)
  256. #define GLUT_WINDOW_NUM_SAMPLES        120
  257. #define GLUT_WINDOW_STEREO        121
  258. #endif
  259. #if (GLUT_API_VERSION >= 3)
  260. #define GLUT_WINDOW_CURSOR        122
  261. #endif
  262. #define GLUT_SCREEN_WIDTH        200
  263. #define GLUT_SCREEN_HEIGHT        201
  264. #define GLUT_SCREEN_WIDTH_MM        202
  265. #define GLUT_SCREEN_HEIGHT_MM        203
  266. #define GLUT_MENU_NUM_ITEMS        300
  267. #define GLUT_DISPLAY_MODE_POSSIBLE    400
  268. #define GLUT_INIT_WINDOW_X        500
  269. #define GLUT_INIT_WINDOW_Y        501
  270. #define GLUT_INIT_WINDOW_WIDTH        502
  271. #define GLUT_INIT_WINDOW_HEIGHT        503
  272. #define GLUT_INIT_DISPLAY_MODE        504
  273. #if (GLUT_API_VERSION >= 2)
  274. #define GLUT_ELAPSED_TIME        700
  275. #endif
  276.  
  277. #if (GLUT_API_VERSION >= 2)
  278. /* glutDeviceGet parameters. */
  279. #define GLUT_HAS_KEYBOARD        600
  280. #define GLUT_HAS_MOUSE            601
  281. #define GLUT_HAS_SPACEBALL        602
  282. #define GLUT_HAS_DIAL_AND_BUTTON_BOX    603
  283. #define GLUT_HAS_TABLET            604
  284. #define GLUT_NUM_MOUSE_BUTTONS        605
  285. #define GLUT_NUM_SPACEBALL_BUTTONS    606
  286. #define GLUT_NUM_BUTTON_BOX_BUTTONS    607
  287. #define GLUT_NUM_DIALS            608
  288. #define GLUT_NUM_TABLET_BUTTONS        609
  289. #endif
  290.  
  291. #if (GLUT_API_VERSION >= 3)
  292. /* glutLayerGet parameters. */
  293. #define GLUT_OVERLAY_POSSIBLE           800
  294. #define GLUT_LAYER_IN_USE        801
  295. #define GLUT_HAS_OVERLAY        802
  296. #define GLUT_TRANSP